home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / UIManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  10.7 KB  |  467 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.Font;
  6. import java.awt.Insets;
  7. import java.beans.PropertyChangeListener;
  8. import java.io.File;
  9. import java.io.Serializable;
  10. import java.util.Hashtable;
  11. import java.util.Properties;
  12. import java.util.StringTokenizer;
  13. import java.util.Vector;
  14. import javax.swing.border.Border;
  15. import javax.swing.plaf.ComponentUI;
  16.  
  17. public class UIManager implements Serializable {
  18.    private static final Object lafStateACKey = new StringBuffer("LookAndFeel State");
  19.    private static final Object classLock = new Object();
  20.    private static Thread currentLAFStateThread = null;
  21.    private static LAFState currentLAFState = null;
  22.    private static final String defaultLAFKey = "swing.defaultlaf";
  23.    private static final String auxiliaryLAFsKey = "swing.auxiliarylaf";
  24.    private static final String multiplexingLAFKey = "swing.plaf.multiplexinglaf";
  25.    private static final String installedLAFsKey = "swing.installedlafs";
  26.    private static LookAndFeelInfo[] installedLAFs = new LookAndFeelInfo[]{new LookAndFeelInfo("Metal", "javax.swing.plaf.metal.MetalLookAndFeel"), new LookAndFeelInfo("CDE/Motif", "com.sun.java.swing.plaf.motif.MotifLookAndFeel"), new LookAndFeelInfo("Windows", "com.sun.java.swing.plaf.windows.WindowsLookAndFeel")};
  27.    // $FF: synthetic field
  28.    static Class class$javax$swing$UIManager;
  29.  
  30.    // $FF: synthetic method
  31.    static String access$0() {
  32.       return makeSwingPropertiesFilename();
  33.    }
  34.  
  35.    // $FF: synthetic method
  36.    static void access$1(Properties var0, String var1) {
  37.       checkProperty(var0, var1);
  38.    }
  39.  
  40.    public static void addAuxiliaryLookAndFeel(LookAndFeel var0) {
  41.       maybeInitialize();
  42.       Vector var1 = getLAFState().auxLookAndFeels;
  43.       if (var1 == null) {
  44.          var1 = new Vector();
  45.       }
  46.  
  47.       if (!var1.contains(var0)) {
  48.          var1.addElement(var0);
  49.          var0.initialize();
  50.          getLAFState().auxLookAndFeels = var1;
  51.          if (getLAFState().multiLookAndFeel == null) {
  52.             getLAFState().multiLookAndFeel = getMultiLookAndFeel();
  53.          }
  54.       }
  55.  
  56.    }
  57.  
  58.    public static void addPropertyChangeListener(PropertyChangeListener var0) {
  59.       Object var1 = classLock;
  60.       synchronized(var1){}
  61.  
  62.       try {
  63.          getLAFState().changeSupport.addPropertyChangeListener(var0);
  64.       } catch (Throwable var3) {
  65.          throw var3;
  66.       }
  67.  
  68.    }
  69.  
  70.    private static void checkProperty(Properties var0, String var1) {
  71.       try {
  72.          String var2 = System.getProperty(var1);
  73.          if (var2 != null) {
  74.             ((Hashtable)var0).put(var1, var2);
  75.          }
  76.       } catch (SecurityException var3) {
  77.       }
  78.  
  79.    }
  80.  
  81.    // $FF: synthetic method
  82.    static Class class$(String var0) {
  83.       try {
  84.          return Class.forName(var0);
  85.       } catch (ClassNotFoundException var2) {
  86.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  87.       }
  88.    }
  89.  
  90.    public static Object get(Object var0) {
  91.       return getDefaults().get(var0);
  92.    }
  93.  
  94.    public static LookAndFeel[] getAuxiliaryLookAndFeels() {
  95.       maybeInitialize();
  96.       Vector var0 = getLAFState().auxLookAndFeels;
  97.       if (var0 != null && var0.size() != 0) {
  98.          LookAndFeel[] var1 = new LookAndFeel[var0.size()];
  99.  
  100.          for(int var2 = 0; var2 < var1.length; ++var2) {
  101.             var1[var2] = (LookAndFeel)var0.elementAt(var2);
  102.          }
  103.  
  104.          return var1;
  105.       } else {
  106.          return null;
  107.       }
  108.    }
  109.  
  110.    public static Border getBorder(Object var0) {
  111.       return getDefaults().getBorder(var0);
  112.    }
  113.  
  114.    public static Color getColor(Object var0) {
  115.       return getDefaults().getColor(var0);
  116.    }
  117.  
  118.    public static String getCrossPlatformLookAndFeelClassName() {
  119.       return "javax.swing.plaf.metal.MetalLookAndFeel";
  120.    }
  121.  
  122.    public static UIDefaults getDefaults() {
  123.       maybeInitialize();
  124.       return getLAFState().multiUIDefaults;
  125.    }
  126.  
  127.    public static Dimension getDimension(Object var0) {
  128.       return getDefaults().getDimension(var0);
  129.    }
  130.  
  131.    public static Font getFont(Object var0) {
  132.       return getDefaults().getFont(var0);
  133.    }
  134.  
  135.    public static Icon getIcon(Object var0) {
  136.       return getDefaults().getIcon(var0);
  137.    }
  138.  
  139.    public static Insets getInsets(Object var0) {
  140.       return getDefaults().getInsets(var0);
  141.    }
  142.  
  143.    public static LookAndFeelInfo[] getInstalledLookAndFeels() {
  144.       maybeInitialize();
  145.       LookAndFeelInfo[] var0 = installedLAFs;
  146.       LookAndFeelInfo[] var1 = new LookAndFeelInfo[var0.length];
  147.       System.arraycopy(var0, 0, var1, 0, var0.length);
  148.       return var1;
  149.    }
  150.  
  151.    public static int getInt(Object var0) {
  152.       return getDefaults().getInt(var0);
  153.    }
  154.  
  155.    private static LAFState getLAFState() {
  156.       Thread var0 = Thread.currentThread();
  157.       if (var0 == currentLAFStateThread) {
  158.          return currentLAFState;
  159.       } else {
  160.          LAFState var1 = (LAFState)SwingUtilities.appContextGet(lafStateACKey);
  161.          if (var1 == null) {
  162.             Object var2 = classLock;
  163.             synchronized(var2){}
  164.  
  165.             try {
  166.                var1 = (LAFState)SwingUtilities.appContextGet(lafStateACKey);
  167.                if (var1 == null) {
  168.                   SwingUtilities.appContextPut(lafStateACKey, var1 = new LAFState());
  169.                }
  170.             } catch (Throwable var4) {
  171.                throw var4;
  172.             }
  173.          }
  174.  
  175.          currentLAFStateThread = var0;
  176.          currentLAFState = var1;
  177.          return var1;
  178.       }
  179.    }
  180.  
  181.    public static LookAndFeel getLookAndFeel() {
  182.       maybeInitialize();
  183.       return getLAFState().lookAndFeel;
  184.    }
  185.  
  186.    public static UIDefaults getLookAndFeelDefaults() {
  187.       maybeInitialize();
  188.       return getLAFState().getLookAndFeelDefaults();
  189.    }
  190.  
  191.    private static LookAndFeel getMultiLookAndFeel() {
  192.       LookAndFeel var0 = getLAFState().multiLookAndFeel;
  193.       if (var0 == null) {
  194.          String var1 = "javax.swing.plaf.multi.MultiLookAndFeel";
  195.          String var2 = getLAFState().swingProps.getProperty("swing.plaf.multiplexinglaf", var1);
  196.  
  197.          try {
  198.             Class var3 = SwingUtilities.loadSystemClass(var2);
  199.             var0 = (LookAndFeel)var3.newInstance();
  200.          } catch (Exception var4) {
  201.             System.err.println("UIManager: failed loading " + var2);
  202.          }
  203.       }
  204.  
  205.       return var0;
  206.    }
  207.  
  208.    public static String getString(Object var0) {
  209.       return getDefaults().getString(var0);
  210.    }
  211.  
  212.    public static String getSystemLookAndFeelClassName() {
  213.       String[] var0 = new String[]{""};
  214.       SwingUtilities.doPrivileged(new 2(var0));
  215.       if (var0[0] != null) {
  216.          if (var0[0].indexOf("Windows") != -1) {
  217.             return "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
  218.          }
  219.  
  220.          if (var0[0].indexOf("Solaris") != -1 || var0[0].indexOf("SunOS") != -1) {
  221.             return "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
  222.          }
  223.  
  224.          if (var0[0].indexOf("Mac") != -1) {
  225.             return "com.sun.java.swing.plaf.mac.MacLookAndFeel";
  226.          }
  227.       }
  228.  
  229.       return getCrossPlatformLookAndFeelClassName();
  230.    }
  231.  
  232.    public static ComponentUI getUI(JComponent var0) {
  233.       maybeInitialize();
  234.       ComponentUI var1 = null;
  235.       LookAndFeel var2 = getLAFState().multiLookAndFeel;
  236.       if (var2 != null) {
  237.          var1 = var2.getDefaults().getUI(var0);
  238.       }
  239.  
  240.       if (var1 == null) {
  241.          var1 = getDefaults().getUI(var0);
  242.       }
  243.  
  244.       return var1;
  245.    }
  246.  
  247.    private static void initialize() {
  248.       Properties var0 = loadSwingProperties();
  249.  
  250.       try {
  251.          Compiler.disable();
  252.          initializeSystemDefaults(var0);
  253.          initializeDefaultLAF(var0);
  254.          initializeAuxiliaryLAFs(var0);
  255.          initializeInstalledLAFs(var0);
  256.       } finally {
  257.          Compiler.enable();
  258.       }
  259.  
  260.    }
  261.  
  262.    private static void initializeAuxiliaryLAFs(Properties var0) {
  263.       String var1 = var0.getProperty("swing.auxiliarylaf");
  264.       if (var1 != null) {
  265.          Vector var2 = new Vector();
  266.          StringTokenizer var3 = new StringTokenizer(var1, ",");
  267.  
  268.          while(var3.hasMoreTokens()) {
  269.             String var5 = var3.nextToken();
  270.  
  271.             try {
  272.                Class var6 = SwingUtilities.loadSystemClass(var5);
  273.                var2.addElement(var6.newInstance());
  274.             } catch (Exception var7) {
  275.                System.err.println("UIManager: failed loading auxiliary look and feel " + var5);
  276.             }
  277.          }
  278.  
  279.          if (var2.size() == 0) {
  280.             var2 = null;
  281.          } else {
  282.             getLAFState().multiLookAndFeel = getMultiLookAndFeel();
  283.             if (getLAFState().multiLookAndFeel == null) {
  284.                var2 = null;
  285.             }
  286.          }
  287.  
  288.          getLAFState().auxLookAndFeels = var2;
  289.       }
  290.    }
  291.  
  292.    private static void initializeDefaultLAF(Properties var0) {
  293.       if (getLAFState().lookAndFeel == null) {
  294.          String var1 = getCrossPlatformLookAndFeelClassName();
  295.          String var2 = var1;
  296.          String var3 = "<undefined>";
  297.  
  298.          try {
  299.             var3 = var0.getProperty("swing.defaultlaf", var2);
  300.             setLookAndFeel(var3);
  301.          } catch (Exception var5) {
  302.             try {
  303.                var3 = var0.getProperty("swing.defaultlaf", var1);
  304.                setLookAndFeel(var3);
  305.             } catch (Exception var4) {
  306.                throw new Error("can't load " + var3);
  307.             }
  308.          }
  309.  
  310.       }
  311.    }
  312.  
  313.    private static void initializeInstalledLAFs(Properties var0) {
  314.       String var1 = var0.getProperty("swing.installedlafs");
  315.       if (var1 != null) {
  316.          Vector var2 = new Vector();
  317.          StringTokenizer var3 = new StringTokenizer(var1, ",", false);
  318.  
  319.          while(var3.hasMoreTokens()) {
  320.             var2.addElement(var3.nextToken());
  321.          }
  322.  
  323.          Vector var4 = new Vector(var2.size());
  324.  
  325.          for(int var5 = 0; var5 < var2.size(); ++var5) {
  326.             String var6 = (String)var2.elementAt(var5);
  327.             String var7 = var0.getProperty(makeInstalledLAFKey(var6, "name"), var6);
  328.             String var8 = var0.getProperty(makeInstalledLAFKey(var6, "class"));
  329.             if (var8 != null) {
  330.                var4.addElement(new LookAndFeelInfo(var7, var8));
  331.             }
  332.          }
  333.  
  334.          installedLAFs = new LookAndFeelInfo[var4.size()];
  335.  
  336.          for(int var9 = 0; var9 < var4.size(); ++var9) {
  337.             installedLAFs[var9] = (LookAndFeelInfo)var4.elementAt(var9);
  338.          }
  339.  
  340.       }
  341.    }
  342.  
  343.    private static void initializeSystemDefaults(Properties var0) {
  344.       Object[] var1 = new Object[]{"FocusManagerClassName", "javax.swing.DefaultFocusManager"};
  345.       getLAFState().setSystemDefaults(new UIDefaults(var1));
  346.       getLAFState().swingProps = var0;
  347.    }
  348.  
  349.    public static void installLookAndFeel(String var0, String var1) {
  350.       installLookAndFeel(new LookAndFeelInfo(var0, var1));
  351.    }
  352.  
  353.    public static void installLookAndFeel(LookAndFeelInfo var0) {
  354.       LookAndFeelInfo[] var1 = getInstalledLookAndFeels();
  355.       LookAndFeelInfo[] var2 = new LookAndFeelInfo[var1.length + 1];
  356.       System.arraycopy(var1, 0, var2, 0, var1.length);
  357.       var2[var1.length] = var0;
  358.       setInstalledLookAndFeels(var2);
  359.    }
  360.  
  361.    private static Properties loadSwingProperties() {
  362.       if ((class$javax$swing$UIManager != null ? class$javax$swing$UIManager : (class$javax$swing$UIManager = class$("javax.swing.UIManager"))).getClassLoader() != null) {
  363.          return new Properties();
  364.       } else {
  365.          Properties var0 = new Properties();
  366.          SwingUtilities.doPrivileged(new 3(var0));
  367.          return var0;
  368.       }
  369.    }
  370.  
  371.    private static String makeInstalledLAFKey(String var0, String var1) {
  372.       return "swing.installedlaf." + var0 + "." + var1;
  373.    }
  374.  
  375.    private static String makeSwingPropertiesFilename() {
  376.       String[] var0 = new String[]{"<java.home undefined>"};
  377.       SwingUtilities.doPrivileged(new 1(var0));
  378.       String var1 = File.separator;
  379.       return var0[0] + var1 + "lib" + var1 + "swing.properties";
  380.    }
  381.  
  382.    private static void maybeInitialize() {
  383.       Object var0 = classLock;
  384.       synchronized(var0){}
  385.  
  386.       try {
  387.          if (!getLAFState().initialized) {
  388.             getLAFState().initialized = true;
  389.             initialize();
  390.          }
  391.       } catch (Throwable var2) {
  392.          throw var2;
  393.       }
  394.  
  395.    }
  396.  
  397.    public static Object put(Object var0, Object var1) {
  398.       return getDefaults().put(var0, var1);
  399.    }
  400.  
  401.    public static boolean removeAuxiliaryLookAndFeel(LookAndFeel var0) {
  402.       maybeInitialize();
  403.       Vector var2 = getLAFState().auxLookAndFeels;
  404.       if (var2 != null && var2.size() != 0) {
  405.          boolean var1 = var2.removeElement(var0);
  406.          if (var1) {
  407.             if (var2.size() == 0) {
  408.                getLAFState().auxLookAndFeels = null;
  409.                getLAFState().multiLookAndFeel = null;
  410.             } else {
  411.                getLAFState().auxLookAndFeels = var2;
  412.             }
  413.          }
  414.  
  415.          var0.uninitialize();
  416.          return var1;
  417.       } else {
  418.          return false;
  419.       }
  420.    }
  421.  
  422.    public static void removePropertyChangeListener(PropertyChangeListener var0) {
  423.       Object var1 = classLock;
  424.       synchronized(var1){}
  425.  
  426.       try {
  427.          getLAFState().changeSupport.removePropertyChangeListener(var0);
  428.       } catch (Throwable var3) {
  429.          throw var3;
  430.       }
  431.  
  432.    }
  433.  
  434.    public static void setInstalledLookAndFeels(LookAndFeelInfo[] var0) throws SecurityException {
  435.       LookAndFeelInfo[] var1 = new LookAndFeelInfo[var0.length];
  436.       System.arraycopy(var0, 0, var1, 0, var0.length);
  437.       installedLAFs = var1;
  438.    }
  439.  
  440.    public static void setLookAndFeel(String var0) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
  441.       Class var1 = SwingUtilities.loadSystemClass(var0);
  442.       setLookAndFeel((LookAndFeel)var1.newInstance());
  443.    }
  444.  
  445.    public static void setLookAndFeel(LookAndFeel var0) throws UnsupportedLookAndFeelException {
  446.       if (var0 != null && !var0.isSupportedLookAndFeel()) {
  447.          String var2 = var0.toString() + " not supported on this platform";
  448.          throw new UnsupportedLookAndFeelException(var2);
  449.       } else {
  450.          LookAndFeel var1 = getLAFState().lookAndFeel;
  451.          if (var1 != null) {
  452.             var1.uninitialize();
  453.          }
  454.  
  455.          getLAFState().lookAndFeel = var0;
  456.          if (var0 != null) {
  457.             var0.initialize();
  458.             getLAFState().setLookAndFeelDefaults(var0.getDefaults());
  459.          } else {
  460.             getLAFState().setLookAndFeelDefaults((UIDefaults)null);
  461.          }
  462.  
  463.          getLAFState().changeSupport.firePropertyChange("lookAndFeel", var1, var0);
  464.       }
  465.    }
  466. }
  467.